package me.timlong;

import java.util.Stack;

public class TowStacksImplementQueue {

    /**
     *题干：
     * 用两个栈来实现一个队列，完成队列的Push和Pop操作。 队列中的元素为int类型。
     *
     * 解决方案：
     *
     * 考虑到入队[a, b, c, d]
     * stack1:
     * stack2：
     *
     * 进队 出队规则
     *
     * 若s2非空，pop s2栈顶元素，
     * 若s2空，s1退栈并进入s2，直到s1空，pop s2
     *
     * 入队，圧栈s1
     *
     */

    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();

    public void push(int node) {
        stack1.push(node);
    }

    public int pop() {
        if(stack2.isEmpty())
            while(!stack1.isEmpty()){
                Integer pop = stack1.pop();
                stack2.push(pop);
            }
        return stack2.pop();
    }


    public static void main(String[] args) {


        TowStacksImplementQueue queue = new TowStacksImplementQueue();
        queue.push(1);
        queue.push(2);
        queue.push(3);


        System.out.println(queue.pop());
        queue.push(4);
        System.out.println(queue.pop());
        System.out.println(queue.pop());
        System.out.println(queue.pop());


    }
}
